package clienteServidor.socket;

import java.io.IOException;
import java.net.SocketException;

import clienteServidor.DatosEquipo;
import clienteServidor.Servidor;
import clienteServidor.hilosServidor.HiloEsperandoNuevosClientes;
import clienteServidor.mensajeDatagrama.MensajesServidorACliente;

public class ServidorSocketUDP implements ServidorUDP{
	private Servidor servidor;
	private MensajesServidorACliente mensajes;
	
	public ServidorSocketUDP(Servidor servidor){
		this.servidor= servidor;
	}
	
	@Override
	public void aceptarConexiones() throws SocketException{
		mensajes= new MensajesServidorACliente(servidor.getDatoConfiguracion(),	
				servidor.getPuertoUDPCaS(), servidor.getPuertoUDPSaC());
		HiloEsperandoNuevosClientes hilo= new HiloEsperandoNuevosClientes(this);
		hilo.start();
	}
	
	@Override
	public DatosEquipo recibirMensajeBroadcast() throws ClassNotFoundException, IOException{
		return mensajes.recibirDatosEquipo();
	}
	
	@Override
	public void enviarDatosConfiguracion(String ipEquipo) throws IOException{
		mensajes.enviarDatoConfiguracion(ipEquipo);		
	}
	
	@Override
	public void finalizarConexionesUDP(){
		mensajes.cerrarDatagrama();
	}
	
	@Override
	public boolean isContinuarEjecucion() {
		return servidor.isContinuarEjecucion();
	}

	@Override
	public void registrarCliente(DatosEquipo de) {
		servidor.agregarEstadoEquipo(de);
	}
}
